const { usersModel } = require('../models/usersModels');
const jwt = require('jsonwebtoken');//验证
const { TOKEN_SECRET } = require('../utils/const')


//登录：//验证
async function login(req, res, next) {
    // 处理登录请求
    // 1. 接收前端发送到后端的数据（账号密码）
    const data = req.body;
    // console.log('前端发送的账号密码：', data);  // { username: 123, userpass: 123 }
    // 2. 在数据库中查询是否有该条数据
    const result = await usersModel.find(data);
    // const result = await usersModel.find({ username: data.username, password: data.userpass });
    // console.log('数据库查询的结果：', result);

    if (result.length > 0) {
        const token = jwt.sign(
            { user: result[0] }, //  用户信息
            TOKEN_SECRET,  // 密钥，任意字符串
            { expiresIn: 60 * 60 } // 设置有效期秒数（数字不带单位）；/'1h'一小时
        )
        // 后端发送处理结果给前端
        res.send({
            message: '登录成功',
            code: 200,
            token: 'Bearer ' + token
        });
    } else {
        // 后端发送处理结果给前端
        res.send({
            message: '登录失败',
            code: 500
        });
    }
};


//注册：
async function register(req, res, next) {
    const data = req.body;  // req.query
    const result = await usersModel.find({ userName: data.userName });
    if (result.length > 0) {
        // 后端发送处理结果给前端
        res.send({
            message: '注册失败！用户已注册！',
            code: 500
        })
        return;
    }
    //用户不存在，则创建添加。
    usersModel.create(data);
    //cosole.log('添加状态：'，result);
    // 返回内容给前端
    res.send({
        message: '注册成功！',
        code: 200
    })
}

//获取考生信息
function getUserInfo(req, res) {
    // 获取请求头中的 token,拆分字符串把之前拼接的去掉
    const token = req.get('Authorization').split(' ')[1];
    // 解码 token
    const { user } = jwt.verify(token, TOKEN_SECRET);
    res.send({
        message: '用户信息获取成功',
        code: 200,
        data: user
    })
}



module.exports = {
    register, login, getUserInfo
}